home *** CD-ROM | disk | FTP | other *** search
/ Java for 3D & VRML Worlds / Java for 3d and VRML Worlds.iso / examples / chap05 / ColorPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-10-16  |  4.6 KB  |  182 lines

  1. import java.awt.Container;
  2. import java.awt.Event;
  3. import java.awt.FlowLayout;
  4. import java.awt.Frame;
  5. import java.awt.GridLayout;
  6. import java.awt.Label;
  7. import java.awt.Panel;
  8. import java.awt.TextComponent;
  9. import java.awt.TextField;
  10. import java.awt.Window;
  11.  
  12. public class ColorPanel extends Frame {
  13.    ColorTester tester;
  14.    float[] rgb = new float[3];
  15.    float val;
  16.    TextField a_txt;
  17.    TextField s_txt;
  18.    TextField t_txt;
  19.    TextField dc_txt_r;
  20.    TextField dc_txt_g;
  21.    TextField dc_txt_b;
  22.    TextField ec_txt_r;
  23.    TextField ec_txt_g;
  24.    TextField ec_txt_b;
  25.    TextField sc_txt_r;
  26.    TextField sc_txt_g;
  27.    TextField sc_txt_b;
  28.    Panel a_panel = new Panel();
  29.    Panel dc_panel;
  30.    Panel ec_panel;
  31.    Panel s_panel;
  32.    Panel sc_panel;
  33.    Panel t_panel;
  34.  
  35.    ColorPanel(ColorTester var1) {
  36.       super("ColorPanel");
  37.       this.a_panel.setLayout(new FlowLayout());
  38.       this.a_txt = new TextField(10);
  39.       this.a_panel.add(new Label("amibientIntensity"));
  40.       this.a_panel.add(this.a_txt);
  41.       this.dc_panel = new Panel();
  42.       this.dc_panel.setLayout(new FlowLayout());
  43.       this.dc_txt_r = new TextField(10);
  44.       this.dc_txt_g = new TextField(10);
  45.       this.dc_txt_b = new TextField(10);
  46.       this.dc_panel.add(new Label("diffuseColor"));
  47.       this.dc_panel.add(this.dc_txt_r);
  48.       this.dc_panel.add(this.dc_txt_g);
  49.       this.dc_panel.add(this.dc_txt_b);
  50.       this.ec_panel = new Panel();
  51.       this.ec_panel.setLayout(new FlowLayout());
  52.       this.ec_txt_r = new TextField(10);
  53.       this.ec_txt_g = new TextField(10);
  54.       this.ec_txt_b = new TextField(10);
  55.       this.ec_panel.add(new Label("emissiveColor"));
  56.       this.ec_panel.add(this.ec_txt_r);
  57.       this.ec_panel.add(this.ec_txt_g);
  58.       this.ec_panel.add(this.ec_txt_b);
  59.       this.s_panel = new Panel();
  60.       this.s_panel.setLayout(new FlowLayout());
  61.       this.s_txt = new TextField(10);
  62.       this.s_panel.add(new Label("shininess"));
  63.       this.s_panel.add(this.s_txt);
  64.       this.sc_panel = new Panel();
  65.       this.sc_panel.setLayout(new FlowLayout());
  66.       this.sc_txt_r = new TextField(10);
  67.       this.sc_txt_g = new TextField(10);
  68.       this.sc_txt_b = new TextField(10);
  69.       this.sc_panel.add(new Label("specularColor"));
  70.       this.sc_panel.add(this.sc_txt_r);
  71.       this.sc_panel.add(this.sc_txt_g);
  72.       this.sc_panel.add(this.sc_txt_b);
  73.       this.t_panel = new Panel();
  74.       this.t_panel.setLayout(new FlowLayout());
  75.       this.t_txt = new TextField(10);
  76.       this.t_panel.add(new Label("transparency"));
  77.       this.t_panel.add(this.t_txt);
  78.       ((Container)this).setLayout(new GridLayout(6, 1, 1, 1));
  79.       ((Container)this).add(this.a_panel);
  80.       ((Container)this).add(this.dc_panel);
  81.       ((Container)this).add(this.ec_panel);
  82.       ((Container)this).add(this.s_panel);
  83.       ((Container)this).add(this.sc_panel);
  84.       ((Container)this).add(this.t_panel);
  85.       ((Window)this).pack();
  86.       this.tester = var1;
  87.    }
  88.  
  89.    public void map() {
  90.       this.a_txt.setText("" + this.tester.get_ambientIntensity());
  91.       this.get_diffuseColor();
  92.       this.get_emissiveColor();
  93.       this.s_txt.setText("" + this.tester.get_shininess());
  94.       this.get_specularColor();
  95.       this.t_txt.setText("" + this.tester.get_transparency());
  96.       ((Window)this).show();
  97.    }
  98.  
  99.    public boolean action(Event var1, Object var2) {
  100.       if (var1.id == 1001) {
  101.          if (this.a_txt == var1.target) {
  102.             this.set_ambientIntensity();
  103.          } else if (this.dc_txt_r != var1.target && this.dc_txt_g != var1.target && this.dc_txt_b != var1.target) {
  104.             if (this.ec_txt_r != var1.target && this.ec_txt_g != var1.target && this.ec_txt_b != var1.target) {
  105.                if (this.s_txt == var1.target) {
  106.                   this.set_shininess();
  107.                } else if (this.sc_txt_r != var1.target && this.sc_txt_g != var1.target && this.sc_txt_b != var1.target) {
  108.                   if (this.t_txt == var1.target) {
  109.                      this.set_transparency();
  110.                   }
  111.                } else {
  112.                   this.set_specularColor();
  113.                }
  114.             } else {
  115.                this.set_emissiveColor();
  116.             }
  117.          } else {
  118.             this.set_diffuseColor();
  119.          }
  120.       }
  121.  
  122.       return true;
  123.    }
  124.  
  125.    void set_rgb(float[] var1, TextField var2, TextField var3, TextField var4) {
  126.       ((TextComponent)var2).setText("" + var1[0]);
  127.       ((TextComponent)var3).setText("" + var1[1]);
  128.       ((TextComponent)var4).setText("" + var1[2]);
  129.    }
  130.  
  131.    void get_rgb(TextField var1, TextField var2, TextField var3, float[] var4) {
  132.       var4[0] = (float)Float.valueOf(((TextComponent)var1).getText()).doubleValue();
  133.       var4[1] = (float)Float.valueOf(((TextComponent)var2).getText()).doubleValue();
  134.       var4[2] = (float)Float.valueOf(((TextComponent)var3).getText()).doubleValue();
  135.    }
  136.  
  137.    void set_ambientIntensity() {
  138.       this.val = (float)Float.valueOf(this.a_txt.getText()).doubleValue();
  139.       this.tester.set_ambientIntensity(this.val);
  140.    }
  141.  
  142.    void set_diffuseColor() {
  143.       this.get_rgb(this.dc_txt_r, this.dc_txt_g, this.dc_txt_b, this.rgb);
  144.       this.tester.set_diffuseColor(this.rgb);
  145.    }
  146.  
  147.    void set_emissiveColor() {
  148.       this.get_rgb(this.ec_txt_r, this.ec_txt_g, this.ec_txt_b, this.rgb);
  149.       this.tester.set_emissiveColor(this.rgb);
  150.    }
  151.  
  152.    void set_shininess() {
  153.       this.val = (float)Float.valueOf(this.s_txt.getText()).doubleValue();
  154.       this.tester.set_shininess(this.val);
  155.    }
  156.  
  157.    void set_specularColor() {
  158.       this.get_rgb(this.sc_txt_r, this.sc_txt_g, this.sc_txt_b, this.rgb);
  159.       this.tester.set_specularColor(this.rgb);
  160.    }
  161.  
  162.    void set_transparency() {
  163.       this.val = (float)Float.valueOf(this.t_txt.getText()).doubleValue();
  164.       this.tester.set_transparency(this.val);
  165.    }
  166.  
  167.    public void get_diffuseColor() {
  168.       this.tester.get_diffuseColor(this.rgb);
  169.       this.set_rgb(this.rgb, this.dc_txt_r, this.dc_txt_g, this.dc_txt_b);
  170.    }
  171.  
  172.    void get_emissiveColor() {
  173.       this.tester.get_emissiveColor(this.rgb);
  174.       this.set_rgb(this.rgb, this.ec_txt_r, this.ec_txt_g, this.ec_txt_b);
  175.    }
  176.  
  177.    void get_specularColor() {
  178.       this.tester.get_specularColor(this.rgb);
  179.       this.set_rgb(this.rgb, this.sc_txt_r, this.sc_txt_g, this.sc_txt_b);
  180.    }
  181. }
  182.